package com.android.wellcherish.kotlindemo2

import android.util.Log

/**
 * @author 张文琛
 * @date 2020/8/2 20:45
 *
 * 数据类不能继承自其他类，也不能被其他类继承，但是可以实现接口
 *
 * 数据类自动实现了 hashCode/equals/toString/copy 等方法
 */
data class DaoMsg(var msgId: String = "", var msgType: MsgType = MsgType.UNKNOWN, var msg: ByteArray) {
    override fun equals(other: Any?): Boolean {
        if (this === other) {
            return true
        }
        if (other !is DaoMsg) {
            return false
        }

        if (msgId != other.msgId) {
            return false
        }

        return true
    }

    override fun hashCode(): Int {
        var result = msgId.hashCode()
        result = 31 * result + msgType.hashCode()
        result = 31 * result + msg.contentHashCode()
        return result
    }
}

fun main(args: Array<String>) {
    var msg1 = DaoMsg(msgId = "1", msgType = MsgType.TEXT, msg = "文本".toByteArray())
    println("get msg from dao, msg1 = $msg1")
    var textMsg = Text(msg1.msgId, msg1.msgType)
    textMsg.setContentByArray(msg1.msg)
    println("create text msg, textMsg = $textMsg")

    var msg2 = DaoMsg(msgId = "2", msgType = MsgType.VOICE, msg = Voice.Data(1, "语音".toByteArray()).toString().toByteArray())
    println("get msg from dao, msg2 = $msg2")
    var voiceMsg = Voice(msg2.msgId, msg2.msgType)
    voiceMsg.setDataByArray(msg2.msg)
    println("create voice, voiceMsg = $voiceMsg")
}